package com.iotp.utils.zb;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 频道管理
 */
public class ChannelManagementUtil {
    private static Logger logger = LoggerFactory.getLogger(RequestUtil.class);

    /**
     * 创建频道
     * @param name  频道名称（最大长度64个字符，只支持中文、字母s、数字和下划线）
     * @param type  频道类型（0:rtmp）
     * @return
     *
     *  参数	类型	说明
     * code	int	状态码
     * cid	String	频道ID，32位字符串
     * ctime	Long	创建频道的时间戳
     * name	String	频道名称
     * pushUrl	String	推流地址
     * httpPullUrl	String	http拉流地址
     * hlsPullUrl	String	hls拉流地址
     * rtmpPullUrl	String	rtmp拉流地址
     * msg	String	错误信息
     */
    public static JSONObject createChannel(String name, int type){
        String url = "https://vcloud.163.com/app/channel/create";
        JSONObject params = new JSONObject();
        params.put("name", name);
        params.put("type", type);
        JSONObject res = RequestUtil.sendPost(url, params);
        logger.info("createChannel={}", res);
        return res;
    }

    /**
     * 修改频道
     * @param name 频道名（最大长度64个字符）
     * @param cid  频道ID，32位字符串
     * @param type 频道类型 ( 0 : rtmp)
     * @return
     * 参数	类型	说明
     * code	int	状态码
     * msg	String	错误信息
     */
    public static JSONObject updateChannel(String name, String cid, int type){
        String url = "https://vcloud.163.com/app/channel/update";
        JSONObject params = new JSONObject();
        params.put("name", name);
        params.put("id", cid);
        params.put("type", type);
        JSONObject res = RequestUtil.sendPost(url, params);
        return res;
    }

    /**
     * 删除频道
     * @param cid 渠道id
     * @return
     */
    public static JSONObject deleteChannel(String cid){
        String url = "https://vcloud.163.com/app/channel/delete";
        JSONObject params = new JSONObject();
        params.put("cid", cid);
        JSONObject res = RequestUtil.sendPost(url, params);
        return res;
    }

    /**
     * 获取渠道状态
     * @param cid 渠道id
     * @return
     */
    public static JSONObject getStatsChannel(String cid){
        String url = "https://vcloud.163.com/app/channelstats";
        JSONObject params = new JSONObject();
        params.put("cid", cid);
        JSONObject res = RequestUtil.sendPost(url, params);
        return res;
    }

    /**
     * 获取频道列表
     * @param records
     * @param pnum
     * @param ofield
     * @param sort
     * @param status
     * @return
     */
    public static JSONObject getListChannel(int records, int pnum, String ofield, int sort, int status){
        String url = "https://vcloud.163.com/app/channellist";
        JSONObject params = new JSONObject();
        params.put("records", records);
        params.put("pnum", pnum);
        params.put("ofield", ofield);
        params.put("sort", sort);
        params.put("status", status);
        JSONObject res = RequestUtil.sendPost(url, params);
        return res;
    }

    /**
     * 重新获取推流地址
     * @param cid 频道ID，32位字符串
     * @return
     */
    public static JSONObject getTLUrl(String cid){
        String url = "https://vcloud.163.com/app/address";
        JSONObject params = new JSONObject();
        params.put("cid", cid);
        JSONObject res = RequestUtil.sendPost(url, params);
        return res;
    }


    /**
     * 设置频道为录制状态
     * @param cid           频道ID，32位字符串
     * @param needRecord    1-开启录制； 0-关闭录制
     * @param format        1-flv； 0-mp4
     * @param duration      录制切片时长(分钟)，5~120分钟
     * @param filename      录制后文件名（只支持中文、字母和数字），格式为filename_YYYYMMDD-HHmmssYYYYMMDD-HHmmss, 文件名录制起始时间（年月日时分秒) -录制结束时间（年月日时分秒)
     * @return
     */
    public static JSONObject setLZState(String cid, int needRecord, int format, int duration, String filename){
        String url = "https://vcloud.163.com/app/channel/setAlwaysRecord";
        JSONObject params = new JSONObject();
        params.put("cid", cid);
        params.put("needRecord", needRecord);
        params.put("format", format);
        params.put("duration", duration);
        params.put("filename", filename);
        JSONObject res = RequestUtil.sendPost(url, params);
        return res;
    }

    /**
     *  禁用频道
     * @param cid   频道ID，32位字符串
     * @return
     */
    public static JSONObject closeChannel(String cid){
        String url = "https://vcloud.163.com/app/channel/pause";
        JSONObject params = new JSONObject();
        params.put("cid", cid);
        JSONObject res = RequestUtil.sendPost(url, params);
        return res;
    }

    /**
     * 批量禁用频道
     * @param cids  关闭的频道ID，32位字符串， 逗号分隔
     * @return
     */
    public static JSONObject batchCloseChannel(String cids){
        String url = "https://vcloud.163.com/app/channellist/pause";
        JSONObject params = new JSONObject();
        JSONArray item = new JSONArray();
        String[] arr = cids.split(",");
        for(String id : arr){
            item.add(id);
        }
        params.put("cidList", item);
        JSONObject res = RequestUtil.sendPost(url, params);
        return res;
    }

    /**
     * 恢复频道
     * @param cid 频道ID，32位字符串
     * @return
     */
    public static JSONObject recoverChannel(String cid){
        String url = "https://vcloud.163.com/app/channel/resume";
        JSONObject params = new JSONObject();
        params.put("cid", cid);
        JSONObject res = RequestUtil.sendPost(url, params);
        return res;
    }

    /**
     * 批量恢复频道
     * @param cids
     * @return
     */
    public static JSONObject batchRecoverChannel(String cids){
        String url = "https://vcloud.163.com/app/channellist/resume";
        JSONObject params = new JSONObject();
        JSONArray item = new JSONArray();
        String[] arr = cids.split(",");
        for(String id : arr){
            item.add(id);
        }
        params.put("cidList", item);
        JSONObject res = RequestUtil.sendPost(url, params);
        return res;
    }

    public static void main(String[] args) {
        System.out.println(createChannel("绿老师2",0));
    }



}
